package keer.httpinterface.http;

/**
 * Content-Type请求头常量类，定义常用的ContentType请求头和对应的{@link HttpContentType}字段
 * @see HttpContentType
 * @since 2024-11
 * @author xieyg
 */
public final class ContentTypes {

    private ContentTypes() {

    }

    /**
     * application/json
     */
    public static final String APPLICATION_JSON = "application/json";
    /**
     * application/json
     * {@link HttpContentType}实例
     */
    public static final HttpContentType APPLICATION_JSON_TYPE = HttpContentType.ofQuietly(APPLICATION_JSON);
    /**
     * application/xml
     */
    public static final String APPLICATION_XML = "application/xml";
    /**
     * application/xml
     * {@link HttpContentType}实例
     */
    public static final HttpContentType APPLICATION_XML_TYPE = HttpContentType.ofQuietly(APPLICATION_XML);
    /**
     * multipart/form-data
     */
    public static final String FORM_URLENCODED = "application/x-www-form-urlencoded";
    /**
     * multipart/form-data
     * {@link HttpContentType}实例
     */
    public static final HttpContentType FORM_URLENCODED_TYPE = HttpContentType.ofQuietly(FORM_URLENCODED);
    /**
     * multipart/form-data
     */
    public static final String MULTIPART_FORM_DATA = "multipart/form-data";
    /**
     * multipart/form-data
     * {@link HttpContentType}实例
     */
    public static final HttpContentType MULTIPART_FORM_DATA_TYPE = HttpContentType.ofQuietly(MULTIPART_FORM_DATA);
    /**
     * application/pdf
     */
    public static final String APPLICATION_PDF = "application/pdf";
    /**
     * application/pdf
     * {@link HttpContentType}实例
     */
    public static final HttpContentType APPLICATION_PDF_TYPE = HttpContentType.ofQuietly(APPLICATION_PDF);
    /**
     * application/octet-stream
     */
    public static final String APPLICATION_OCTET_STREAM = "application/octet-stream";
    /**
     * application/octet-stream
     * {@link HttpContentType}实例
     */
    public static final HttpContentType APPLICATION_OCTET_STREAM_TYPE = HttpContentType.ofQuietly(APPLICATION_OCTET_STREAM);
    /**
     * application/zip
     */
    public static final String APPLICATION_ZIP = "application/zip";
    /**
     * application/zip
     * {@link HttpContentType}实例
     */
    public static final HttpContentType APPLICATION_ZIP_TYPE = HttpContentType.ofQuietly(APPLICATION_ZIP);

    /**
     * text/plain
     */
    public static final String TEXT_PLAIN = "text/plain";
    /**
     * text/plain
     * {@link HttpContentType}实例
     */
    public static final HttpContentType TEXT_PLAIN_TYPE = HttpContentType.ofQuietly(TEXT_PLAIN);
    /**
     * text/html
     */
    public static final String TEXT_HTML = "text/html";
    /**
     * text/html
     * {@link HttpContentType}实例
     */
    public static final HttpContentType TEXT_HTML_TYPE = HttpContentType.ofQuietly(TEXT_HTML);
    /**
     * text/css
     */
    public static final String TEXT_CSS = "text/css";
    /**
     * text/css
     * {@link HttpContentType}实例
     */
    public static final HttpContentType TEXT_CSS_TYPE = HttpContentType.ofQuietly(TEXT_CSS);
    /**
     * text/javascript
     */
    public static final String TEXT_JAVASCRIPT = "text/javascript";
    /**
     * text/javascript
     * {@link HttpContentType}实例
     */
    public static final HttpContentType TEXT_JAVASCRIPT_TYPE = HttpContentType.ofQuietly(TEXT_JAVASCRIPT);
    /**
     * text/csv
     */
    public static final String TEXT_CSV = "text/csv";
    /**
     * text/csv
     * {@link HttpContentType}实例
     */
    public static final HttpContentType TEXT_CSV_TYPE = HttpContentType.ofQuietly(TEXT_CSV);

    /**
     * image/jpeg
     */
    public static final String IMAGE_JPEG = "image/jpeg";
    /**
     * image/jpeg
     * {@link HttpContentType}实例
     */
    public static final HttpContentType IMAGE_JPEG_TYPE = HttpContentType.ofQuietly(IMAGE_JPEG);
    /**
     * image/png
     */
    public static final String IMAGE_PNG = "image/png";
    /**
     * image/png
     * {@link HttpContentType}实例
     */
    public static final HttpContentType IMAGE_PNG_TYPE = HttpContentType.ofQuietly(IMAGE_PNG);
    /**
     * image/gif
     */
    public static final String IMAGE_GIF = "image/gif";
    /**
     * image/gif
     * {@link HttpContentType}实例
     */
    public static final HttpContentType IMAGE_GIF_TYPE = HttpContentType.ofQuietly(IMAGE_GIF);
    /**
     * image/svg+xml
     */
    public static final String IMAGE_SVG_XML = "image/svg+xml";
    /**
     * image/svg+xml
     * {@link HttpContentType}实例
     */
    public static final HttpContentType IMAGE_SVG_XML_TYPE = HttpContentType.ofQuietly(IMAGE_SVG_XML);

    /**
     * audio/mpeg
     */
    public static final String AUDIO_MPEG = "audio/mpeg";
    /**
     * audio/mpeg
     * {@link HttpContentType}实例
     */
    public static final HttpContentType AUDIO_MPEG_TYPE = HttpContentType.ofQuietly(AUDIO_MPEG);
    /**
     * audio/ogg
     */
    public static final String AUDIO_OGG = "audio/ogg";
    /**
     * audio/ogg
     * {@link HttpContentType}实例
     */
    public static final HttpContentType AUDIO_OGG_TYPE = HttpContentType.ofQuietly(AUDIO_OGG);

    /**
     * video/mp4
     */
    public static final String VIDEO_MP4 = "video/mp4";
    /**
     * video/mp4
     * {@link HttpContentType}实例
     */
    public static final HttpContentType VIDEO_MP4_TYPE = HttpContentType.ofQuietly(VIDEO_MP4);
    /**
     * video/webm
     */
    public static final String VIDEO_WEBM = "video/webm";
    /**
     * video/webm
     * {@link HttpContentType}实例
     */
    public static final HttpContentType VIDEO_WEBM_TYPE = HttpContentType.ofQuietly(VIDEO_WEBM);
}
